package movieGandalf.logicGuiConnection;

import java.math.BigInteger;
import java.util.LinkedList;
import java.util.List;

public interface Movie extends DBObject{
    
	//Getters.
	
	@Override
    public BigInteger getID();
    
    public String getName();
    
    public String getImdbName();
    
    public int getYear();
    
    public int getLength();
    
    public Country getCountry();
    
    public String getCountryName();
    
    public Integer getCountryID();
    
    public Language getLanguage();
    
    public String getLanguageName();
    
    public Integer getLanguageID();
    
    public Director getDirector();
    
    public BigInteger getDirectorID();
    
    public boolean isColor();
    
    public MPAARating getMPAARating();
    
    public String getMPAARatingName();
    
    public Integer getMPAARatingID();
    
    public Float getOurRating();
    
    public List<Role> getActorList();
    
    public List<Genre> getGenres();
    
    public List<Integer> getGenreIDs();
    
    public String getDescription(); //Notice: the description is not stored in the Movie Object, rather it is fetched from the database. 
    
    
    // Setters
    
    public void setID(BigInteger id);
	
	public void setName(String name);
	
	public void setImdbName(String imdbName);
	
	public void setYear(int year);
	
	public void setLength(int length);
	
	public void setCountry(Country country);
	
	public void setLanguage(Language language);
	
	public void setDirectorID(BigInteger directorID);

	public void setColor(boolean isColor);

	public void setMPAARating(MPAARating mpaaRating);

	public void setOurRating(Float ourRating);
	
	public boolean addGenre(Integer genreID);
	
	public boolean setGenre(LinkedList<Genre> genre);

	public boolean setDescription(String description); //Notice: the description is automatically updated in the database (no .update() needed).
    
}